package material.iteratorAndComponent.iterator;

import material.iteratorAndComponent.MenuItem;

public class DinerMenu {
    /**
     * 餐厅的菜单使用的是一个数组，所以可以控制菜单的长度，并且在取出的菜单项的时候不需要转型
     */
    static final int MAX_ITEMS = 6;
    int numberOfItems = 0;
    MenuItem[] menuItems;

    public DinerMenu() {
        menuItems = new MenuItem[MAX_ITEMS];
        addItem("素食BLT", "培根配生菜和西红柿小麦", true, 2.99);
        addItem("BLT", "全麦培根配生菜和番茄", false, 2.99);
        addItem("汤", "今天的汤，配一份土豆沙拉", false, 2.99);
        addItem("热狗", "一个热狗，配沙罗，调味品，洋葱，用奶酪调味", false, 3.05);
    }

    /**
     * aditem方法需要拿所有必要的参数来创建一个菜单项，并实例化它。这个方法也会检查数是否已经超出了它的长度限制。
     *
     * @param name
     * @param description
     * @param vegetarian
     * @param price
     */
    public void addItem(String name, String description, boolean vegetarian, double price) {
        MenuItem menuItem = new MenuItem(name, description, vegetarian, price);
        if (numberOfItems >= MAX_ITEMS) {
            System.err.println("抱歉，菜单已经满了，您无法继续添加");
        } else {
            menuItems[numberOfItems] = menuItem;
            numberOfItems++;
        }
    }

//    /**
//     * 返回一个菜单项的数组
//     *
//     * @return
//     */
//    public MenuItem[] getMenuItems() {
//        return menuItems;
//    }

    public Iterator createIterator() {
        return new DinerMenuIterator(menuItems);
    }
}
